package com.imyuanma.qingyun.common.ext;

import com.imyuanma.qingyun.common.util.CollectionUtil;
import com.imyuanma.qingyun.interfaces.common.ext.ExtNodeResult;
import com.imyuanma.qingyun.interfaces.common.ext.IExtNode;

import java.util.List;

/**
 * 扩展点执行工具类
 *
 * @author wangjy
 * @date 2023/01/02 14:05:36
 */
public class ExtNodeExecuteUtil {
    /**
     * 执行扩展点
     * @param extList
     * @param extNodeParam
     * @param <P>
     * @param <R>
     * @return
     */
    public static <P, R> ExtNodeResult<R> execute(List<? extends IExtNode<P, R>> extList, P extNodeParam) {
        if (CollectionUtil.isNotEmpty(extList)) {
            for (IExtNode<P, R> extNode : extList) {
                if (extNode != null) {
                    return extNode.execute(extNodeParam);
                }
            }
        }
        return ExtNodeResult.error("Ext Node Is Null");
    }
}
